rm(list = ls(all = TRUE))
setwd("C:\\Users\\lenovo\\Desktop\\R")
#14.1 Meta分析的基本步骤
#Meta分析本质是一种观察性研究，包括提出问题、收集和分析数据、报告结果
#（1）提出问题、指定研究计划
#临床研究、流行病学研究中不确定的或有争议的问题
#主要用于临床随机对照试验

#（2）检索相关文献
#首先确定关键词，再确定关键词之间的关系
#利用数据库和其他网络资源检索相关文献
#特别要关注未发表的阴性结果

#（3）选择符合要求的纳入文献
#制定纳入、排除标准

#（4）文献的信息提取
#各种指标

#（5）纳入研究的质量评价
#质量评价是对Meta分析结果进行敏感性分析时给予文献不同权重的依据
#用于考查和解释研究间的异质性及研究结果的差异
#纳入文献的质量高低可用权重表示
#采用文献质量评价量表或评分系统对文献进行评分
#Jaded量表、Chalmers量表、Cochrane偏倚风险评估工具

#（6）资料的统计学处理
#最重要的步骤
#1、明确资料类型、选择适当的效应量
#2、纳入研究的异质性分析
#3、模型选择和统计分析，得到合并统计量的点估计、区间估计等统计推断结果
#4、发表偏倚分析
#5、为保证结果的稳健性，有时需要进行敏感性分析

#（7）结果的分析和讨论
#1、异质性的来源及其对合并效应量的影响
#2、是否需要做亚组分析
#3、各种偏倚的识别与控制
#4、Meta分析结果的实际意义

#14.2 Meta分析的常用统计方法

#二分类变量：
#相对危险度（Relative Risk, RR)
#优势比(Odds Ratio, OR)
#危险度差(Risk Difference, RD)

#连续型变量：
#均值
#均值差（Mean Difference，MD）
#标准化均值差（Standardized Mean Difference，SMD）
#相关系数

#变异的来源主要有研究内变异和研究间变异

#研究间变异较小，可认为研究间差异只是抽样误差引起的，
#纳入分析的各个独立研究来自同一个总体，
#各个独立研究的效应合并量这个总体参数的估计值
#利用固定效应模型（fixed effect model)
#该模型假设哥哥研究之间只有一个真效应值，
#研究之间观测到的效应值的差别只来源于抽样误差

#如果研究间差异较大，每个研究来自不同的但又相互关联的一些总体
#每个总体有其相应的总体参数，效应合并量是多个不同总体参数的加权平均
#此时可采用随机效应模型（rando effect model）
#该模型假设各研究的真效应值是不同的

#合并效应量常用的统计方法有Mantel-Haenszel法、Peto法、Fleiss法、
#方差倒数法、DerSimonian-Laird法

#Mantel-Haeszel法：适用于二分类变量
#Peto法：适用于结局变量是优势比的变量
#Fleiss法：适用于只提供了试验组（病例组）和对照组
#的发病率（或暴露率）的资料

#install.packages("meta")
#函数中的sm用于设置合并效应量的模型

#14.3 二分类变量的Meta分析
#14.3.1 OR、RR和RD的合并

#重点介绍OR值的合并
#加载数据
library(meta)
data(Fleiss93)
Fleiss93

#1 合并OR值
#event：事件，死亡
#n：总数
#.c：对照组 control
#.e：实验组 experimental
metabin(event.e, n.e, event.c, n.c, data = Fleiss93, sm = "OR")

#首先需看异质性检验的结果
#两种：Q统计量和I2统计量
#对于Q统计量的卡方检验称之为Q检验
#为提高检验效能，Q检验以0.1为检验水准

#I2是2003年Higgins等在Q统计量的基础上提出的一个评价异质性的指标
#I2 = （Q-（k-1））/Q*100%
#K为纳入研究的数目
#I2反映了异质性部分在效应量的总变异中所占的比重
#I2取值范围为0-1，小于0时取0
#I2越大，异质性越大，一般要求I2小于50%

#接下来看参数合并的方法
#metabin函数中，method用于设置合并OR的方法
#默认为"MH"（Mantel-Haenszel法）
#还可设为"Peto"（Peto法）、"Inverse"（方差倒数法）

#参数method.tau用于设置随机效应模型中研究间方差tau^2的估计方法
#默认为"DL"(DerSimonian-Laird法)
#还可以用"REML"（有约束的极大似然法）
#"PM"（Paule-Mandel法）、"SJ"（Sidik-Jonkman法）等


#绘制森林图
m <- metabin(event.e, n.e, event.c, n.c, data = Fleiss93, sm = "OR",
             studlab = paste(study,year))
forest(m,comb.random = FALSE)
#comb.random设为FALSE是为了只展现固定效应模型
#若是使用随机效应模型，则应该设comb.fixed为FALSE


#2 合并RR值
#对于前瞻性研究，RR值的可解释性更好，
#只需把函数matabin中的参数sm设为RR
metabin(event.e, n.e, event.c, n.c, data = Fleiss93, sm = "RR")

#3 合并RD值
#也可以选择两个率之差（或危险度差）
metabin(event.e, n.e, event.c, n.c, data = Fleiss93, sm = "RD")
#根据异质性检验结果，使用固定效应模型合并统计量
#使用阿司匹林能够使心肌梗死的死亡率降低约1.43%

#14.3.2 发表偏倚的识别
#Meta分析最突出的问题是发表偏倚
funnel(m)
#分布不对称，存在发表偏倚的可能
#检验对称性的方法有线性回归法（Begg法）、秩相关法（Egger法）、Peters法等
#这些都可以用metabias实现，但纳入研究个数较少时，这些检验的功效较低
#函数metabias在面对纳入实验数量小于10个的Meta分析默认不给出偏倚的检验结果
#只给出一个警告信息
metabias(m)

#如果确实需要得到漏斗图的对称性检验的结果，
#设置参数metabias里参数k.min的值
metabias(m,k.min = 7)
#p>0.05,不能拒绝漏斗图对称的假设

#剪补法(trim and fill method)评估发表偏倚
#首先剪切漏斗图中不对称的小样本研究
#用剪切后的对称部分估计漏斗图的中心值
#再在漏斗图中心值的两侧添补被剪切部分以及相应的缺失部分
#最后用添补后的漏斗图重新估计矫正后的效应量
#trimfill函数
#默认只显示随机效应模型
tf1 <- trimfill(m, comb.fixed = TRUE)
summary(tf1)

#结果表明，剪补法共添加了3个研究，异质性检验还是没有统计学意义
#因此，仍然采用固定效应模型

#绘制使用剪补填补后的漏斗图
funnel(tf1)

#14.3.3 敏感性分析
#为了解Meta分析的稳健性，执行敏感性分析
#1 比较固定效应模型和随机效应模型下合并效应量的差异
#2 剔除质量较低的研究后进行效应量的合并，比较结论的差异
#3 逐一剔除每一个纳入的研究后进行效应量的合并，比较结论的差异
#最后一种可以使用meta包里的函数metainf函数
#若采用随机效应模型，则改参数pooled为random
metainf(m, pooled = "fixed")


#14.4 连续型变量资料的Meta分析
#以MD、SMD为效应量的情形
#MD：干预措施（或暴露）的测量方法和量纲相同
#SMD：干预措施（或暴露）的测量方法和量纲相差较大
data("Fleiss1993cont")
Fleiss1993cont
#可见，差异较大，适宜用SMD
m <- metacont(n.e = n.psyc, 
         mean.e = mean.psyc,
         sd.e = sd.psyc,
         n.c = n.cont,
         mean.c = mean.cont,
         sd.c = sd.cont,
         sm = "SMD",
         studlab = paste(study,year), data = Fleiss1993cont)
forest(m, comb.fixed = TRUE)

#结果表明，Q检验不显著，其I2统计量为0.0%，各研究异质性不大，
#可选用固定效应模型，合并后SMD为-0.3434，差异有统计学意义


#14.5 Meta分析的注意事项
#如果异质性较大，首先应考虑是否有异常研究纳入
#通过敏感性研究排除
#或者做亚组分析
#若异质性仍较大，再尝试随机效应模型
#异质性过于明显，应放弃Meta，只对结果进行一般性的统计描述


